home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 February: Tool Chest / Dev.CD Feb 94.toast / Tool Chest / Development Platforms / MPW Related / MPW Interfaces / PInterfaces / TextEdit.p < prev    next >
Encoding:
Text File  |  1993-09-17  |  11.2 KB  |  363 lines  |  [TEXT/MPS ]

  1. {
  2.     File:        TextEdit.p
  3.  
  4.     Copyright:    © 1983-1993 by Apple Computer, Inc.
  5.                 All rights reserved.
  6.  
  7.     Version:    System 7.1 for ETO #11
  8.     Created:    Tuesday, March 30, 1993 18:00
  9.  
  10. }
  11.  
  12. {$IFC UNDEFINED UsingIncludes}
  13. {$SETC UsingIncludes := 0}
  14. {$ENDC}
  15.  
  16. {$IFC NOT UsingIncludes}
  17.  UNIT TextEdit;
  18.  INTERFACE
  19. {$ENDC}
  20.  
  21. {$IFC UNDEFINED UsingTextEdit}
  22. {$SETC UsingTextEdit := 1}
  23.  
  24. {$I+}
  25. {$SETC TextEditIncludes := UsingIncludes}
  26. {$SETC UsingIncludes := 1}
  27. {$IFC UNDEFINED UsingQuickdraw}
  28. {$I $$Shell(PInterfaces)Quickdraw.p}
  29. {$ENDC}
  30. {$SETC UsingIncludes := TextEditIncludes}
  31.  
  32. CONST
  33.  
  34. { Justification (word alignment) styles }
  35.  
  36. teJustLeft = 0;
  37. teJustCenter = 1;
  38. teJustRight = -1;
  39. teForceLeft = -2;
  40.  
  41. { new names for the Justification (word alignment) styles }
  42. teFlushDefault = 0;                        {flush according to the line direction }
  43. teCenter = 1;                            {center justify (word alignment) }
  44. teFlushRight = -1;                        {flush right for all scripts }
  45. teFlushLeft = -2;                        {flush left for all scripts }
  46.  
  47. { Set/Replace style modes }
  48. fontBit = 0;                            {set font}
  49. faceBit = 1;                            {set face}
  50. sizeBit = 2;                            {set size}
  51. clrBit = 3;                                {set color}
  52. addSizeBit = 4;                            {add size mode}
  53. toggleBit = 5;                            {set faces in toggle mode}
  54. toglBit = 5;                            { obsolete.  use toggleBit }
  55.  
  56. { TESetStyle/TEContinuousStyle modes }
  57. doFont = 1;                                { set font (family) number}
  58. doFace = 2;                                {set character style}
  59. doSize = 4;                                {set type size}
  60. doColor = 8;                            {set color}
  61. doAll = 15;                                {set all attributes}
  62. addSize = 16;                            {adjust type size}
  63. doToggle = 32;                            {toggle mode for TESetStyle & TEContinuousStyle}
  64.  
  65. { offsets into TEDispatchRec }
  66. EOLHook = 0;                            {[ProcPtr] TEEOLHook}
  67. DRAWHook = 4;                            {[ProcPtr] TEWidthHook}
  68. WIDTHHook = 8;                            {[ProcPtr] TEDrawHook}
  69. HITTESTHook = 12;                        {[ProcPtr] TEHitTestHook}
  70. nWIDTHHook = 24;                        {[ProcPtr] nTEWidthHook}
  71. TextWidthHook = 28;                        {[ProcPtr] TETextWidthHook}
  72.  
  73. { selectors for TECustomHook }
  74. intEOLHook = 0;                            {TEIntHook value}
  75. intDrawHook = 1;                        {TEIntHook value}
  76. intWidthHook = 2;                        {TEIntHook value}
  77. intHitTestHook = 3;                        {TEIntHook value}
  78. intNWidthHook = 6;                        {TEIntHook value for new version of WidthHook}
  79. intTextWidthHook = 7;                    {TEIntHook value for new TextWidthHook}
  80.  
  81. { feature or bit definitions for TEFeatureFlag }
  82. teFAutoScroll = 0;                        {00000001b}
  83. teFAutoScr = 0;                            {00000001b  obsolete. use teFAutoScroll}
  84. teFTextBuffering = 1;                    {00000010b}
  85. teFOutlineHilite = 2;                    {00000100b}
  86. teFInlineInput = 3;                        {00001000b  obsolete}
  87. teFUseTextServices = 4;                    {00010000b  obsolete}
  88.  
  89. { action for the new "bit (un)set" interface, TEFeatureFlag }
  90. teBitClear = 0;
  91. teBitSet = 1;                            {set the selector bit}
  92. teBitTest = -1;                            {no change; just return the current setting}
  93.  
  94. {constants for identifying the routine that called FindWord }
  95. teWordSelect = 4;                        {clickExpand to select word}
  96. teWordDrag = 8;                            {clickExpand to drag new word}
  97. teFromFind = 12;                        {FindLine called it ($0C)}
  98. teFromRecal = 16;                        {RecalLines called it ($10)      obsolete}
  99.  
  100. {constants for identifying DoText selectors }
  101. teFind    = 0;                                            {DoText called for searching}
  102. teHighlight    = 1;                                        {DoText called for highlighting}
  103. teDraw    = -1;                                            {DoText called for drawing text}
  104. teCaret    = -2;                                            {DoText called for drawing the caret}
  105.  
  106. TYPE
  107. TEPtr = ^TERec;
  108. TEHandle = ^TEPtr;
  109. TERec = RECORD
  110.  destRect: Rect;
  111.  viewRect: Rect;
  112.  selRect: Rect;
  113.  lineHeight: INTEGER;
  114.  fontAscent: INTEGER;
  115.  selPoint: Point;
  116.  selStart: INTEGER;
  117.  selEnd: INTEGER;
  118.  active: INTEGER;
  119.  wordBreak: ProcPtr;
  120.  clikLoop: ProcPtr;
  121.  clickTime: LONGINT;
  122.  clickLoc: INTEGER;
  123.  caretTime: LONGINT;
  124.  caretState: INTEGER;
  125.  just: INTEGER;
  126.  teLength: INTEGER;
  127.  hText: Handle;
  128. { recalBack: INTEGER;        }
  129. { recalLines: INTEGER;        }
  130.  hDispatchRec: LONGINT;            { added to replace recalBack & recalLines.  it's a handle anyway }
  131.  clikStuff: INTEGER;
  132.  crOnly: INTEGER;
  133.  txFont: INTEGER;
  134.  txFace: Style;                            {txFace is unpacked byte}
  135.  txMode: INTEGER;
  136.  txSize: INTEGER;
  137.  inPort: GrafPtr;
  138.  highHook: ProcPtr;
  139.  caretHook: ProcPtr;
  140.  nLines: INTEGER;
  141.  lineStarts: ARRAY [0..16000] OF INTEGER;
  142.  END;
  143.  
  144. CharsPtr = ^Chars;
  145. CharsHandle = ^CharsPtr;
  146.  
  147. Chars = PACKED ARRAY [0..32000] OF CHAR;
  148.  
  149. StyleRun = RECORD
  150.  startChar: INTEGER;                    {starting character position}
  151.  styleIndex: INTEGER;                    {index in style table}
  152.  END;
  153.  
  154. STElement = RECORD
  155.  stCount: INTEGER;                        {number of runs in this style}
  156.  stHeight: INTEGER;                        {line height}
  157.  stAscent: INTEGER;                        {font ascent}
  158.  stFont: INTEGER;                        {font (family) number}
  159.  stFace: Style;                            {character Style}
  160.  stSize: INTEGER;                        {size in points}
  161.  stColor: RGBColor;                        {absolute (RGB) color}
  162.  END;
  163.  
  164. STPtr = ^TEStyleTable;
  165. STHandle = ^STPtr;
  166.  
  167. TEStyleTable = ARRAY [0..1776] OF STElement;
  168.  
  169. LHElement = RECORD
  170.  lhHeight: INTEGER;                        {maximum height in line}
  171.  lhAscent: INTEGER;                        {maximum ascent in line}
  172.  END;
  173.  
  174. LHPtr = ^LHTable;
  175. LHHandle = ^LHPtr;
  176.  
  177. LHTable = ARRAY [0..8000] OF LHElement;
  178.  
  179. ScrpSTElement = RECORD
  180.  scrpStartChar: LONGINT;                {starting character position}
  181.  scrpHeight: INTEGER;                    {starting character position}
  182.  scrpAscent: INTEGER;
  183.  scrpFont: INTEGER;
  184.  scrpFace: Style;                        {unpacked byte}
  185.  scrpSize: INTEGER;
  186.  scrpColor: RGBColor;
  187.  END;
  188.  
  189. ScrpSTTable = ARRAY [0..1600] OF ScrpSTElement;
  190.  
  191. StScrpPtr = ^StScrpRec;
  192. StScrpHandle = ^StScrpPtr;
  193. StScrpRec = RECORD
  194.  scrpNStyles: INTEGER;                    {number of styles in scrap}
  195.  scrpStyleTab: ScrpSTTable;                {table of styles for scrap}
  196.  END;
  197.  
  198. NullStPtr = ^NullStRec;
  199. NullStHandle = ^NullStPtr;
  200. NullStRec = RECORD
  201.  teReserved: LONGINT;                    {reserved for future expansion}
  202.  nullScrap: StScrpHandle;                {handle to scrap style table}
  203.  END;
  204.  
  205. TEStylePtr = ^TEStyleRec;
  206. TEStyleHandle = ^TEStylePtr;
  207. TEStyleRec = RECORD
  208.  nRuns: INTEGER;                        {number of style runs}
  209.  nStyles: INTEGER;                        {size of style table}
  210.  styleTab: STHandle;                    {handle to style table}
  211.  lhTab: LHHandle;                        {handle to line-height table}
  212.  teRefCon: LONGINT;                        {reserved for application use}
  213.  nullStyle: NullStHandle;                {Handle to style set at null selection}
  214.  runs: ARRAY [0..8000] OF StyleRun;        {ARRAY [0..8000] OF StyleRun}
  215.  END;
  216.  
  217. TextStylePtr = ^TextStyle;
  218. TextStyleHandle = ^TextStylePtr;
  219. TextStyle = RECORD
  220.  tsFont: INTEGER;                        {font (family) number}
  221.  tsFace: Style;                            {character Style}
  222.  tsSize: INTEGER;                        {size in point}
  223.  tsColor: RGBColor;                        {absolute (RGB) color}
  224.  END;
  225.  
  226.  
  227. TEIntHook = INTEGER;
  228.  
  229. PROCEDURE TEInit;
  230.  INLINE $A9CC;
  231. FUNCTION TENew(destRect: Rect;viewRect: Rect): TEHandle;
  232.  INLINE $A9D2;
  233. PROCEDURE TEDispose(hTE: TEHandle);
  234.  INLINE $A9CD;
  235. PROCEDURE TESetText(text: Ptr;length: LONGINT;hTE: TEHandle);
  236.  INLINE $A9CF;
  237. FUNCTION TEGetText(hTE: TEHandle): CharsHandle;
  238.  INLINE $A9CB;
  239. PROCEDURE TEIdle(hTE: TEHandle);
  240.  INLINE $A9DA;
  241. PROCEDURE TESetSelect(selStart: LONGINT;selEnd: LONGINT;hTE: TEHandle);
  242.  INLINE $A9D1;
  243. PROCEDURE TEActivate(hTE: TEHandle);
  244.  INLINE $A9D8;
  245. PROCEDURE TEDeactivate(hTE: TEHandle);
  246.  INLINE $A9D9;
  247. PROCEDURE TEKey(key: CHAR;hTE: TEHandle);
  248.  INLINE $A9DC;
  249. PROCEDURE TECut(hTE: TEHandle);
  250.  INLINE $A9D6;
  251. PROCEDURE TECopy(hTE: TEHandle);
  252.  INLINE $A9D5;
  253. PROCEDURE TEPaste(hTE: TEHandle);
  254.  INLINE $A9DB;
  255. PROCEDURE TEDelete(hTE: TEHandle);
  256.  INLINE $A9D7;
  257. PROCEDURE TEInsert(text: Ptr;length: LONGINT;hTE: TEHandle);
  258.  INLINE $A9DE;
  259. PROCEDURE TESetAlignment(just: INTEGER;hTE: TEHandle);
  260.  INLINE $A9DF;
  261. PROCEDURE TESetJust(just: INTEGER;hTE: TEHandle);
  262.  INLINE $A9DF;
  263. PROCEDURE TEUpdate(rUpdate: Rect;hTE: TEHandle);
  264.  INLINE $A9D3;
  265. PROCEDURE TETextBox(text: Ptr;length: LONGINT;box: Rect;just: INTEGER);
  266.  INLINE $A9CE;
  267. PROCEDURE TextBox(text: Ptr;length: LONGINT;box: Rect;just: INTEGER);
  268.  INLINE $A9CE;
  269. PROCEDURE TEScroll(dh: INTEGER;dv: INTEGER;hTE: TEHandle);
  270.  INLINE $A9DD;
  271. PROCEDURE TESelView(hTE: TEHandle);
  272.  INLINE $A811;
  273. PROCEDURE TEPinScroll(dh: INTEGER;dv: INTEGER;hTE: TEHandle);
  274.  INLINE $A812;
  275. PROCEDURE TEAutoView(fAuto: BOOLEAN;hTE: TEHandle);
  276.  INLINE $A813;
  277. FUNCTION TEScrapHandle: Handle;
  278.  INLINE $2EB8,$0AB4;
  279. PROCEDURE TECalText(hTE: TEHandle);
  280.  INLINE $A9D0;
  281. FUNCTION TEGetOffset(pt: Point;hTE: TEHandle): INTEGER;
  282.  INLINE $A83C;
  283. FUNCTION TEGetPoint(offset: INTEGER;hTE: TEHandle): Point;
  284.  INLINE $3F3C,$0008,$A83D;
  285. PROCEDURE TEClick(pt: Point;fExtend: BOOLEAN;h: TEHandle);
  286.  INLINE $A9D4;
  287. FUNCTION TEStylNew(destRect: Rect;viewRect: Rect): TEHandle;
  288.  INLINE $A83E;
  289. FUNCTION TEStyleNew(destRect: Rect;viewRect: Rect): TEHandle;
  290.  INLINE $A83E;
  291. PROCEDURE SetStylHandle(theHandle: TEStyleHandle;hTE: TEHandle);
  292.  INLINE $3F3C,$0005,$A83D;
  293. PROCEDURE SetStyleHandle(theHandle: TEStyleHandle;hTE: TEHandle);
  294.  INLINE $3F3C,$0005,$A83D;
  295. PROCEDURE TESetStyleHandle(theHandle: TEStyleHandle;hTE: TEHandle);
  296.  INLINE $3F3C,$0005,$A83D;
  297. FUNCTION GetStylHandle(hTE: TEHandle): TEStyleHandle;
  298.  INLINE $3F3C,$0004,$A83D;
  299. FUNCTION GetStyleHandle(hTE: TEHandle): TEStyleHandle;
  300.  INLINE $3F3C,$0004,$A83D;
  301. FUNCTION TEGetStyleHandle(hTE: TEHandle): TEStyleHandle;
  302.  INLINE $3F3C,$0004,$A83D;
  303. PROCEDURE TEGetStyle(offset: INTEGER;VAR theStyle: TextStyle;VAR lineHeight: INTEGER;
  304.  VAR fontAscent: INTEGER;hTE: TEHandle);
  305.  INLINE $3F3C,$0003,$A83D;
  306. PROCEDURE TEStylPaste(hTE: TEHandle);
  307.  INLINE $3F3C,$0000,$A83D;
  308. PROCEDURE TEStylePaste(hTE: TEHandle);
  309.  INLINE $3F3C,$0000,$A83D;
  310. PROCEDURE TESetStyle(mode: INTEGER;newStyle: TextStyle;fRedraw: BOOLEAN;
  311.  hTE: TEHandle);
  312.  INLINE $3F3C,$0001,$A83D;
  313. PROCEDURE TEReplaceStyle(mode: INTEGER;oldStyle: TextStyle;newStyle: TextStyle;
  314.  fRedraw: BOOLEAN;hTE: TEHandle);
  315.  INLINE $3F3C,$0002,$A83D;
  316. FUNCTION TEGetStyleScrapHandle(hTE: TEHandle): StScrpHandle;
  317.  INLINE $3F3C,$0006,$A83D;
  318. FUNCTION GetStylScrap(hTE: TEHandle): StScrpHandle;
  319.  INLINE $3F3C,$0006,$A83D;
  320. FUNCTION GetStyleScrap(hTE: TEHandle): StScrpHandle;
  321.  INLINE $3F3C,$0006,$A83D;
  322. PROCEDURE TEStylInsert(text: Ptr;length: LONGINT;hST: StScrpHandle;hTE: TEHandle);
  323.  INLINE $3F3C,$0007,$A83D;
  324. PROCEDURE TEStyleInsert(text: Ptr;length: LONGINT;hST: StScrpHandle;hTE: TEHandle);
  325.  INLINE $3F3C,$0007,$A83D;
  326. FUNCTION TEGetHeight(endLine: LONGINT;startLine: LONGINT;hTE: TEHandle): LONGINT;
  327.  INLINE $3F3C,$0009,$A83D;
  328. FUNCTION TEContinuousStyle(VAR mode: INTEGER;VAR aStyle: TextStyle;hTE: TEHandle): BOOLEAN;
  329.  INLINE $3F3C,$000A,$A83D;
  330. PROCEDURE SetStylScrap(rangeStart: LONGINT;rangeEnd: LONGINT;newStyles: StScrpHandle;
  331.  redraw: BOOLEAN;hTE: TEHandle);
  332.  INLINE $3F3C,$000B,$A83D;
  333. PROCEDURE SetStyleScrap(rangeStart: LONGINT;rangeEnd: LONGINT;newStyles: StScrpHandle;
  334.  redraw: BOOLEAN;hTE: TEHandle);
  335.  INLINE $3F3C,$000B,$A83D;
  336. PROCEDURE TEUseStyleScrap(rangeStart: LONGINT;rangeEnd: LONGINT;newStyles: StScrpHandle;
  337.  fRedraw: BOOLEAN;hTE: TEHandle);
  338.  INLINE $3F3C,$000B,$A83D;
  339. PROCEDURE TECustomHook(which: TEIntHook;VAR addr: ProcPtr;hTE: TEHandle);
  340.  INLINE $3F3C,$000C,$A83D;
  341. FUNCTION TENumStyles(rangeStart: LONGINT;rangeEnd: LONGINT;hTE: TEHandle): LONGINT;
  342.  INLINE $3F3C,$000D,$A83D;
  343. FUNCTION TEFeatureFlag(feature: INTEGER;action: INTEGER;hTE: TEHandle): INTEGER;
  344.  INLINE $3F3C,$000E,$A83D;
  345. FUNCTION TEGetScrapLength: LONGINT;
  346. FUNCTION TEGetScrapLen: LONGINT;
  347. PROCEDURE TESetScrapLength(length: LONGINT);
  348. PROCEDURE TESetScrapLen(length: LONGINT);
  349. FUNCTION TEFromScrap: OSErr;
  350. FUNCTION TEToScrap: OSErr;
  351. PROCEDURE TESetClickLoop(clikProc: ProcPtr;hTE: TEHandle);
  352. PROCEDURE SetClikLoop(clikProc: ProcPtr;hTE: TEHandle);
  353. PROCEDURE TESetWordBreak(wBrkProc: ProcPtr;hTE: TEHandle);
  354. PROCEDURE SetWordBreak(wBrkProc: ProcPtr;hTE: TEHandle);
  355.  
  356.  
  357. {$ENDC} { UsingTextEdit }
  358.  
  359. {$IFC NOT UsingIncludes}
  360.  END.
  361. {$ENDC}
  362.  
  363.